Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 07
NameSize
..
README.md5.5 KiBlog stats plain blame
Solutions33 Blog stats plain
bitwiseSimpleExamples.cpp277 Blog stats plain blame
numerialSystemsExample.cpp1.7 KiBlog stats plain blame

Бройни системи и побитови операции

Десетична (decimal) Двоична (binary) осмична (octal) Шестнайсетична (hexadecimal) Унарна (unary)
00 00000 00 00 00001
01 00001 01 01 00011
02 00010 02 02 00111
03 00011 03 03 01111
04 00100 04 04 ...
05 00101 05 05
06 00110 06 06
07 00111 07 07
08 01000 10 08
09 01001 11 09
10 01010 12 0A
11 01011 13 0B
12 01100 14 0C
13 01101 15 0D

Преобразуване между бройни системи

Примери:

  • Алгоритъм за преобразуване от произволна бройна система в дестична бройна система
  • Алгоритъм за преобразуване от десетчина бройна система в произволна бройна система

Представяния на отрицателни числа

  • One's complement (5) [101] -(flip)-> [010] (-5)
  • Two's complement (5) [101] -(flip)-> [010] + [001] = [011] (-5)

Побитови операции

прилагат върху един бит или набор от повече отделни битове на двоични числа

  • Побитово И (&)
  • Побитово ИЛИ (|)
  • Побитово ИЗКЛЮЧВАЩО ИЛИ (^)
  • Побитово отместване (<< ) ( >>)
a 101010100
b 100101110
a&b 100000100
a | b 101111110
a^b 001111010
a << 2 101010000
a >> 2 001010101

Примери:

  • Функция, която с побитови операции проверява дали число е четно
  • Функция, която с побитови операции повдига 2 на степен k.

Задачи

Задача 1: Напишете функция, която приема число от в произволна бройна система и преобразува директно (без да минава през десетична) числото в друга произволна бройна система.

Задача 2 Да се напише функция, която приема масив, в който всяко число се среща 2 пъти с изключение на едно число, което се среща веднъж. Напишете функция, която приема такъв масив и връща кое е това число. (Подсказка: използвайте побитови операции, за да постигнете линейно решение)

Вход: [9 18 9 12 18 15 12], Изход: 15

Задача 3 Напишете функция, която приема цяло число и връща броя на 1-ците в двоичния му запис.

Вход: 189, Изход: 6

Задача 4 : Напишете функция, която приема цяло число и обръща най-десният бит в него, който е единица.

Вход: 12, Изход: 8

Вход: 15, Изход: 14

Задача 5: Напишете функция, която по подадено цяло число n и цяло число k и връща числото, което е "закодирано" в последните k бита на n.

Вход: 15 2, Изход: 3

Вход: 189 3, Изход: 5

Вход: 189 4, Изход: 13

Задача 6: Напишете функция, която приема цяло число n и цяло число k и връща дали k в двоичен запис (разглеждайки го без водещите 0-ли) е част от двоичния запис на n.

Вход: 15 3, Изход: true

Вход: 13 5 Изход: true

Вход: 13 7, Изход: false

Задача 7: Напишете функция, която приема масив(разглеждаме го като множество) и отпечатва всички негови подмножества.

Вход: [1, 2, 3], Изход: [], [1], [2], [3], [1,2], [2,3], [1,3], [1,2,3]

Вход: 13 5 Изход: true

Вход: 13 7, Изход: false